﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.Domain.PermisosModule.Contracts.CultivosFechas
{
    /// <summary>
    /// Contrato del servicio de fechas de ciclo
    /// </summary>
    public interface ICultivosFechaService
        : IDisposable
    {
        /// <summary>
        /// Agrega una fecha de cultivo.
        /// </summary>
        /// <param name="fecha"></param>
        void AddCultivosFecha(CultivosFecha fecha);

        /// <summary>
        /// Modifica una fecha de cultivo.
        /// </summary>
        /// <param name="fecha"></param>
        void ChangeCultivosFecha(CultivosFecha fecha);

        /// <summary>
        /// Encuentra las fechas de cultivo de acuerdo al
        /// cultivo, el ciclo y la junta.
        /// </summary>
        /// <param name="cultivoGuid"></param>
        /// <param name="cicloGuid"></param>
        /// <param name="juntaGuid"></param>
        /// <returns></returns>
        List<CultivosFecha> FindCultivosFechasByCultivoAndCicloAndJunta(
            Guid cultivoGuid,
            Guid cicloGuid,
            Guid juntaGuid
        );

        /// <summary>
        /// Encuentra las fechas de cultivo para expedición
        /// </summary>
        /// <param name="cultivoGuid"></param>
        /// <param name="cicloGuid"></param>
        /// <param name="juntaGuid"></param>
        /// <param name="fromDate"></param>
        /// <param name="toDate"></param>
        /// <returns></returns>
        List<CultivosFecha> FindCultivosFechasForExpedicion(
            Guid cultivoGuid,
            Guid cicloGuid,
            Guid juntaGuid,
            DateTime fromDate,
            DateTime toDate
        );

    }
}